package model;

import java.awt.Color;

/**
 * Cette classe représente les Cartes Défensives du jeu. Elle hérite des
 * méthodes de la classe Carte et implémente la classe ObjetAttaquable.
 *
 * @author Antoine Thorr, Joana Santos, Samy Rida, Vicky Ngo Pagbe
 */
public class CarteDefensive extends Carte implements ObjetAttaquable {

    private int pointDefense;
    private final int pdBak;
    private int pointContre;

    /**
     * Constructeur de la classe CarteOffensive.Créer une carte et lui affecte
     * un nom, un coût, un type, des points de défense, et des points de contre,
     * puis lui affecte sa couleur.
     *
     * @param cout : Coût de la carte
     * @param nom : Nom de la carte
     * @param type : Type de la carte
     * @param pd : Point de defense de la carte
     * @param pc : point de contre de la carte
     *
     */
    public CarteDefensive(int cout, String nom, Type type, int pd, int pc) {
        super(cout, nom, type);
        this.pointDefense = pd;
        this.pdBak = pd;
        this.pointContre = pc;
        super.setC(new Color(0, 52, 113));
    }

    /**
     * Retourne les points de contre de la carte.
     *
     * @return les points de contre.
     */
    public int getPointContre() {
        return pointContre;
    }

    /**
     * Permet de définir les point de Contre
     *
     * @param pointContre : Nouveau point de contre
     */
    public void setPointContre(int pointContre) {
        this.pointContre = pointContre;
    }

    /**
     * Retourne l'attitude de la carte.
     *
     * @return defensive
     */
    @Override
    public String getAttitude() {
        return "defensive";
    }

    /**
     * Redéfinition de la méthode toString qui permet d'affihcer les point de
     * défense.
     *
     * @return Affiche point de défense.
     */
    @Override
    public String toString() {
        return "+" + this.getPointDefense();
    }

    /**
     * Retourne le nom de la classe.
     *
     * @return "carte".
     */
    @Override
    public String getNomClasse() {
        return "carte";
    }

    /**
     * Retourne les points de défense de la carte.
     *
     * @return les points de défense.
     */
    @Override
    public int getVie() {
        return this.getPointDefense();
    }
    
    /**
     * Retourne les points de défense initiaux de la carte.
     *
     * @return les points de défense initiaux.
     */
    @Override
    public int getVieBak() {
        return this.pdBak;
    }

    /**
     * Permet de définir les points de défense.
     *
     * @param v : Nouveaux points de défenses.
     */
    @Override
    public void setVie(int v) {
        this.setPointDefense(v);
    }

    /**
     * @return the pointDefense
     */
    public int getPointDefense() {
        return pointDefense;
    }

    /**
     * @param pointDefense the pointDefense to set
     */
    public void setPointDefense(int pointDefense) {
        this.pointDefense = pointDefense;
    }
}
